package `01-agency`

/**
 * 属性委托给类
 * 第一种：继承时将接口的实现委托给构造函数的参数
 */
interface DB{
    fun open();
}

class MyDB:DB{
   override fun open(){
       print("我是MyDB")
   }
}

class SqlDB:DB{
    override fun open(){
        print("我是SqlDB")
    }
}

/**
 * CreateDB类将DB接口的实现委托给了构造函数中的参数db来实现。
 */
class CreateDB(db:DB):DB by db{

}

fun main(args: Array<String>) {
    //具体使用，在创建的时候传入参数。
    var db = MyDB()
    var createDB = CreateDB(db)
    createDB.open()
}